package com.offics.loan.domain.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 还款记录实体类
 */
@Data
@TableName("loan_repayment_record")
public class RepaymentRecord {

    /**
     * 还款记录ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 贷款ID
     */
    private Long loanId;

    /**
     * 还款计划ID
     */
    private Long repaymentPlanId;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 还款金额（单位：分）
     */
    private Long amount;

    /**
     * 还款时间
     */
    private LocalDateTime repayTime;

    /**
     * 还款方式（0-银行卡，1-支付宝，2-微信）
     */
    private Integer repayType;

    /**
     * 银行卡ID
     */
    private Long bankCardId;

    /**
     * 交易编号
     */
    private String tradeNo;

    /**
     * 状态（0-处理中，1-成功，2-失败）
     */
    private Integer status;

    /**
     * 是否删除（0-未删除，1-已删除）
     */
    @TableLogic
    private Integer deleted;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 检查还款是否成功
     *
     * @return 是否成功
     */
    public boolean isSuccess() {
        return status != null && status == 1;
    }

    /**
     * 检查还款是否失败
     *
     * @return 是否失败
     */
    public boolean isFailed() {
        return status != null && status == 2;
    }

    /**
     * 检查还款是否处理中
     *
     * @return 是否处理中
     */
    public boolean isProcessing() {
        return status != null && status == 0;
    }

    /**
     * 获取还款方式文本
     *
     * @return 还款方式文本
     */
    public String getRepayTypeText() {
        if (repayType == null) {
            return "";
        }
        switch (repayType) {
            case 0:
                return "银行卡";
            case 1:
                return "支付宝";
            case 2:
                return "微信";
            default:
                return "未知";
        }
    }
}